.
├── README.md
├── package-lock.json
├── scripts
│ └── ios.sh
└── src
├── App.tsx
├── Example.js
├── TestNativeIosModule
│ ├── TestButton.tsx
│ └── TestButton1.tsx
├── android
│ ├── Gemfile
│ ├── app
│ │ ├── build
│ │ │ └── outputs
│ │ │ ├── apk
│ │ │ └── bundle
│ │ ├── build.gradle
│ │ ├── google-services.json
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── co
│ │ │ └── gcalls
│ │ │ └── shell -> Native module
│ │ │ ├── AudioManagerModule.java -> Custom Audio Manager Module
│ │ │ ├── AudioManagerModulePackage.java
│ │ │ ├── BackgroundTaskEventService.java -> Background Task Event
│ │ │ ├── BackgroundTaskModule.java -> Background Task Module
│ │ │ ├── BackgroundTaskModulePackage.java -> Background Task Module ( Custom module)
│ │ │ ├── BackgroundTaskService.java -> Function for background task Module (HeadlessJs)
│ │ │ ├── BootReceiver.java -> Run background Task when app close
│ │ │ ├── CallButtonInterceptor.java -> handle phoneNumber for outgoing
│ │ │ ├── GcallsLifeCycleTracker.java -> Native lifecycle tracker
│ │ │ ├── GcallsPhoneStateListener.java
│ │ │ ├── LocalStorageModule.java -> Custom localstorage
│ │ │ ├── LocalStorageModulePackage.java
│ │ │ ├── MainActivity.java -> App lifecycle, handle permission,handleIntent
│ │ │ ├── MainApplication.java -> Add native Module
│ │ │ ├── contacts -> Sync/authen contact from other app (Research)
│ │ │ │ ├── AuthenticatorActivity.java
│ │ │ │ ├── Contact.java
│ │ │ │ ├── ContactColumns.java
│ │ │ │ └── SyncStateReceiver.java
│ │ │ ├── provider -> Sync.authen contact from other App
│ │ │ │ ├── AccountGeneral.java
│ │ │ │ ├── AuthenticationService.java
│ │ │ │ ├── Authenticator.java
│ │ │ │ ├── ContactProvider.java
│ │ │ │ ├── ContactProviderContract.java
│ │ │ │ ├── ContactUpdateService.java
│ │ │ │ ├── ContactsManager.java
│ │ │ │ ├── DatabaseHelper.java
│ │ │ │ ├── SyncAdapter.java
│ │ │ │ └── SyncService.java
│ │ │ └── services
│ │ └── -> App Icon
│ │ ├── drawable
│ │ │ ├── ic_launcher.png
│ │ │ └── icon.png
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── xml
│ │ ├── account_type.xml
│ │ ├── authenticator.xml
│ │ ├── contacts.xml
│ │ └── syncadapter.xml
│ ├── fastlane -> CICD
│ │ ├── Appfile -> config json_key_file ( google playstore key)
│ │ ├── Fastfile -> config Lane (auto build - deploy)
│ │ ├── README.md
│ │ ├── metadata -> App metadata (Store Listing)
│ │ │ └── android
│ │ │ ├── en-US
│ │ │ │ ├── changelogs
│ │ │ │ │ └── default.txt
│ │ │ │ ├── full_description.txt
│ │ │ │ ├── short_description.txt
│ │ │ │ ├── title.txt
│ │ │ │ └── video.txt
│ │ │ ├── tester_list.txt
│ │ │ └── vi
│ │ │ └── changelogs
│ │ │ └── default.txt
│ │ └── secure -> secure
│ │ ├── gcallsshell-key.keystore -> appkey
│ │ ├── mobile-dev-13d1a-51e09f8c29bf.json -> firebase key
│ │ ├── pc-api-7709112798689248816-695-09af9c402ef9.json -> playstore key
│ │ └── secret.sh -> CICD
│ ├── local.properties -> android - sdk dir
│ ├── settings.gradle -> config app module
├── app.json
├── babel.config.js
├── components
│ └── contact.js
├── env.d.ts
├── gModules -> Gcalls Module
│ ├── gAndroidPermission.js
│ ├── gAppStateModule.js -> Manage App State ( Foreground or Background)
│ ├── gNativeAndroidModule.js -> Manage Native Android Module
│ ├── gNativeIosModule.js -> Manage Ios Module
│ └── gWebViewMessage.js -> Message from Omnibox
├── index.js
├── ios
│ ├── AudioManagerIosModule.h -> Audio Manager Native Module
│ ├── AudioManagerIosModule.m
│ ├── CalendarManager.swift -> Just write a test Module
│ ├── CallKitManager.swift -> Handle Phone Number from Default Contact App
│ ├── CallkitModule.swift
│ ├── Gcalls
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.mm -> Ios Lifecycle
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset -> App Icon
│ │ │ │ ├── 100.png
│ │ │ │ ├── 102.png
│ │ │ │ ├── 1024.png
│ │ │ │ ├── 114.png
│ │ │ │ ├── 120.png
│ │ │ │ ├── 128.png
│ │ │ │ ├── 144.png
│ │ │ │ ├── 152.png
│ │ │ │ ├── 16.png
│ │ │ │ ├── 167.png
│ │ │ │ ├── 172.png
│ │ │ │ ├── 180.png
│ │ │ │ ├── 196.png
│ │ │ │ ├── 20.png
│ │ │ │ ├── 216.png
│ │ │ │ ├── 256.png
│ │ │ │ ├── 29.png
│ │ │ │ ├── 32.png
│ │ │ │ ├── 40.png
│ │ │ │ ├── 48.png
│ │ │ │ ├── 50.png
│ │ │ │ ├── 512.png
│ │ │ │ ├── 55.png
│ │ │ │ ├── 57.png
│ │ │ │ ├── 58.png
│ │ │ │ ├── 60.png
│ │ │ │ ├── 64.png
│ │ │ │ ├── 66.png
│ │ │ │ ├── 72.png
│ │ │ │ ├── 76.png
│ │ │ │ ├── 80.png
│ │ │ │ ├── 87.png
│ │ │ │ ├── 88.png
│ │ │ │ ├── 92.png
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Info.plist -> App info, permission
│ │ ├── LaunchScreen.storyboard
│ │ └── main.m
│ ├── Gcalls-Bridging-Header.h
│ ├── GcallsTests-Bridging-Header.h
│ ├── Gemfile -> Ruby Module (fastlane)
│ ├── Gemfile.lock
│ ├── LocalStorageIosModule.h -> Native Ios Module
│ ├── LocalStorageIosModule.m
│ ├── Matchfile
│ ├── NSObject+CallObserver.h
│ ├── Podfile
│ ├── Podfile.lock
│ ├── RCTCalendarModule.h
│ ├── RCTCalendarModule.m
│ ├── RTCCallkitModule.m
│ ├── UserActivityModule.h -> Get phone_num when User call from default contact app
│ ├── UserActivityModule.m
│ ├── ViewController.swift
│ ├── build
│ ├── fastlane -> CICD
│ │ ├── Appfile
│ │ ├── Deliverfile
│ │ ├── Fastfile
│ │ ├── Pluginfile
│ │ ├── README.md
│ │ ├── ipa
│ │ │ └── Gcalls.app.dSYM.zip
│ │ └── metadata
│ │ ├── copyright.txt
│ │ ├── en-US
│ │ │ ├── apple_tv_privacy_policy.txt
│ │ │ ├── description.txt
│ │ │ ├── keywords.txt
│ │ │ ├── marketing_url.txt
│ │ │ ├── name.txt
│ │ │ ├── privacy_url.txt
│ │ │ ├── promotional_text.txt
│ │ │ ├── subtitle.txt
│ │ │ └── support_url.txt
│ │ ├── primary_category.txt
│ │ ├── primary_first_sub_category.txt
│ │ ├── primary_second_sub_category.txt
│ │ ├── review_information
│ │ │ ├── demo_password.txt
│ │ │ ├── demo_user.txt
│ │ │ ├── email_address.txt
│ │ │ ├── first_name.txt
│ │ │ ├── last_name.txt
│ │ │ ├── notes.txt
│ │ │ └── phone_number.txt
│ │ ├── secondary_category.txt
│ │ ├── secondary_first_sub_category.txt
│ │ ├── secondary_second_sub_category.txt
│ │ ├── tester.txt
│ │ └── vi
│ │ ├── apple_tv_privacy_policy.txt
│ │ ├── description.txt
│ │ ├── keywords.txt
│ │ ├── marketing_url.txt
│ │ ├── name.txt
│ │ ├── privacy_url.txt
│ │ ├── promotional_text.txt
│ │ ├── subtitle.txt
│ │ └── support_url.txt
│ └── main.jsbundle
├── metro.config.js
├── package-lock.json
├── package.json
├── services -> App servive
│ ├── push-notification-service.js
│ ├── track-player-background.js
│ └── voip-push-notification-service.js
├── tsconfig.json
└── utils
├── gCommonFunc.js
├── gConst.js
└── gScreenSetting.js